package com.bdth.mixapi.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * swagger2的配置文件
 * @Auth LGP
 */
@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createTestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("test")
                .apiInfo(testApi())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.bdth.mixapi.api.controller.test"))
                .paths(PathSelectors.ant("/test/**"))
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo testApi() {
        return new ApiInfoBuilder()
                //页面标题
                .title("基于Spring Boot构建的北斗天汇综合管理平台API")
                //版本号
                .version("1.0")
                //描述
                .description("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北斗天汇信息中心是一个庞大的数据中心集群，包含各个行业应用的数据中心、北斗畅聊数据中心。数据中心的组成：<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一是，以互联网通信为主、北斗短报文通信为辅的双网络通道，包含构建通道所需的软硬件基础设备，如网络交换机、串口服务器、北斗指挥机、北斗阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是，与北斗分理服务平台之间的数据共享接口（双向）；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是，数据存储集群，如数据库服务器、磁盘阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四是，强大的数据处理与计算后台。<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据中心支持跨地域部署，既可以搭在北斗天汇集团机房，由集团统一管理，也可搭在客户机房中，由客户自行维护。数据中心也可按照行业分类搭建。<br>")
                .build();
    }

    @Bean
    public Docket createIndexApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("index")
                .apiInfo(indexApi())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.bdth.mixapi.api.controller.index"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo indexApi() {
        return new ApiInfoBuilder()
                //页面标题
                .title("北斗天汇综合管理平台--首页API")
                //版本号
                .version("1.0")
                //描述
                .description("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北斗天汇信息中心是一个庞大的数据中心集群，包含各个行业应用的数据中心、北斗畅聊数据中心。数据中心的组成：<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一是，以互联网通信为主、北斗短报文通信为辅的双网络通道，包含构建通道所需的软硬件基础设备，如网络交换机、串口服务器、北斗指挥机、北斗阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是，与北斗分理服务平台之间的数据共享接口（双向）；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是，数据存储集群，如数据库服务器、磁盘阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四是，强大的数据处理与计算后台。<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据中心支持跨地域部署，既可以搭在北斗天汇集团机房，由集团统一管理，也可搭在客户机房中，由客户自行维护。数据中心也可按照行业分类搭建。<br>")
                .build();
    }

    @Bean
    public Docket createHealthApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("health")
                .apiInfo(healthApi())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.bdth.mixapi.api.controller.health"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo healthApi() {
        return new ApiInfoBuilder()
                //页面标题
                .title("北斗天汇综合管理平台--健康API")
                //版本号
                .version("1.0")
                //描述
                .description("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北斗天汇信息中心是一个庞大的数据中心集群，包含各个行业应用的数据中心、北斗畅聊数据中心。数据中心的组成：<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一是，以互联网通信为主、北斗短报文通信为辅的双网络通道，包含构建通道所需的软硬件基础设备，如网络交换机、串口服务器、北斗指挥机、北斗阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是，与北斗分理服务平台之间的数据共享接口（双向）；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是，数据存储集群，如数据库服务器、磁盘阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四是，强大的数据处理与计算后台。<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据中心支持跨地域部署，既可以搭在北斗天汇集团机房，由集团统一管理，也可搭在客户机房中，由客户自行维护。数据中心也可按照行业分类搭建。<br>")
                .build();
    }

    @Bean
    public Docket createTrafficApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("traffic")
                .apiInfo(trafficApi())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.bdth.mixapi.api.controller.traffic"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo trafficApi() {
        return new ApiInfoBuilder()
                //页面标题
                .title("北斗天汇综合管理平台--部标API")
                //版本号
                .version("1.0")
                //描述
                .description("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北斗天汇信息中心是一个庞大的数据中心集群，包含各个行业应用的数据中心、北斗畅聊数据中心。数据中心的组成：<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一是，以互联网通信为主、北斗短报文通信为辅的双网络通道，包含构建通道所需的软硬件基础设备，如网络交换机、串口服务器、北斗指挥机、北斗阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是，与北斗分理服务平台之间的数据共享接口（双向）；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是，数据存储集群，如数据库服务器、磁盘阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四是，强大的数据处理与计算后台。<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据中心支持跨地域部署，既可以搭在北斗天汇集团机房，由集团统一管理，也可搭在客户机房中，由客户自行维护。数据中心也可按照行业分类搭建。<br>")
                .build();
    }

    @Bean
    public Docket createFenliApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("fenli")
                .apiInfo(fenliApi())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.bdth.mixapi.api.controller.fenli"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo fenliApi() {
        return new ApiInfoBuilder()
                //页面标题
                .title("北斗天汇综合管理平台--专线API")
                //版本号
                .version("1.0")
                //描述
                .description("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北斗天汇信息中心是一个庞大的数据中心集群，包含各个行业应用的数据中心、北斗畅聊数据中心。数据中心的组成：<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一是，以互联网通信为主、北斗短报文通信为辅的双网络通道，包含构建通道所需的软硬件基础设备，如网络交换机、串口服务器、北斗指挥机、北斗阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是，与北斗分理服务平台之间的数据共享接口（双向）；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是，数据存储集群，如数据库服务器、磁盘阵列等；<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四是，强大的数据处理与计算后台。<br>" +
                        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据中心支持跨地域部署，既可以搭在北斗天汇集团机房，由集团统一管理，也可搭在客户机房中，由客户自行维护。数据中心也可按照行业分类搭建。<br>")
                .build();
    }
}
